
using NHibernate.Criterion;
using SIP.PN.Filtros.Interfaces;
using SIP.PN.Modelo.Entidades;

namespace SIP.PN.Filtros
{
    public class FiltroProyecto : FiltroAbstracto, IFiltroProyecto
    {
        private int? codigo;
        private string nombre;
        private TipoDeProyecto tipoDeProyecto;
        private ProyectoEstado estado;

        [ExcluirFiltro]
        public int? Codigo
        {
            get { return codigo; }
            set { codigo = value; }
        }

        [CreadorDeCriterioLikeAnywhere]
        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        public TipoDeProyecto TipoDeProyecto
        {
            get { return tipoDeProyecto; }
            set { tipoDeProyecto = value; }
        }

        public ProyectoEstado Estado
        {
            get { return estado; }
            set { estado = value; }
        }

        public override void AgregarFiltros(NHibernate.ICriteria criteria)
        {
            base.AgregarFiltros(criteria);

            if (codigo.HasValue && codigo.Value != int.MinValue)
                criteria.Add(Restrictions.Eq("Codigo", codigo.Value));

        }

    }
}
